using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Entidades;

namespace Datos
{
    public class SocioD
    {
        DBAccess dba;

    #region CONSTRUCTOR
        public SocioD()
        { 
            this.dba = new DBAccess();
        }
    #endregion

    #region CONSULTAR
      public DataTable SocioConsultar(SocioE socio)
      {
          try
          {
              socio.PrepararSocio();
              dba.Parametros.Clear();

              CargarParametros(socio);

              return dba.ExecuteDataTable("SocioConsultar");
          }
          catch (Exception ex)
          {   
              throw ex;
          }
      }

      public DataTable SocioConsultar()
      {
          try
          {
              SocioE socioE = new SocioE();
              socioE.Clear();

              return this.SocioConsultar(socioE);
          }
          catch (Exception)
          {                
              throw;
          }
      }

      public SocioE SocioConsultar(String idSocio)
      {
          try
          {
              SocioE socioE = new SocioE();
              socioE.Socio = idSocio;
              DataTable dt = this.SocioConsultar(socioE);

              socioE = new SocioE(dt.Rows[0]);

              return socioE;
          }
          catch (Exception)
          {
              throw;
          }
      }
    #endregion

    #region INSERTAR
      public void SocioInsertar(SocioE socio)
      {
          try
          {
              dba.Parametros.Clear();
              CargarParametros(socio);

              dba.ExecuteNonQuery("SocioInsertar");
          }
          catch (Exception)
          {
              throw;
          }
      }
    #endregion

    #region MODIFICAR
      public void SocioModificar(SocioE socio)
      {
          try
          {
              dba.Parametros.Clear();
              CargarParametros(socio);
              dba.ExecuteNonQuery("SocioModificar");
          }
          catch (Exception)
          {
              throw;
          }
      }
    #endregion

    #region BORRAR
      public void SocioEliminar(SocioE socio)
      {
          try
          {
              dba.Parametros.Clear();
              CargarParametros(socio);
              dba.ExecuteNonQuery("SocioEliminar");            
          }
          catch (Exception)
          {
              throw;
          }
      }
    #endregion

    #region METODOS
      private void CargarParametros(SocioE socio)
      {
          try
          {
              this.dba.Parametros.Add("@idSocio", socio.Socio);
              this.dba.Parametros.Add("@nombre", socio.Nombre);
              this.dba.Parametros.Add("@apellido", socio.Apellido);
              this.dba.Parametros.Add("@telefonoCelular", socio.TelefonoCelular);
              this.dba.Parametros.Add("@telefonoParticular", socio.TelefonoParticular);
              this.dba.Parametros.Add("@calle", socio.Calle);
              this.dba.Parametros.Add("@numero", socio.Numero);
              this.dba.Parametros.Add("@piso", socio.Piso);
              this.dba.Parametros.Add("@mail", socio.Mail);
              this.dba.Parametros.Add("@departamento", socio.Departamento);
              this.dba.Parametros.Add("@nextel", socio.Nextel);
              this.dba.Parametros.Add("@eliminado", socio.Eliminado);
          }
          catch (Exception)
          {
              throw;
          }
      }

      public Boolean ExisteId(String id)
      {
          try
          {
              dba.Parametros.Clear();
              dba.Parametros.Add("@idSocio", id);
              DataTable dt = dba.ExecuteDataTable("SocioConsultar");
              if (dt.Rows.Count != 0)
              {
                  return false;
              }
              else
              {
                  return true;
              }
          }
          catch (Exception)
          {
              throw;
          }
      }
    #endregion
    }
}
